home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 February / PCWorld_2006-02_cd.bin / software / vyzkuste / audacity / audacity-win-1.2.4b.exe / {app} / Nyquist / printrec.lsp < prev    next >
Lisp/Scheme  |  2002-09-16  |  894b  |  31 lines

  1. ; prints recursive list structure
  2.  
  3. ;(let (seen-list)
  4. (setf seenlist nil)
  5.   (defun seenp (l) (member l seenlist :test 'eq))
  6.   (defun make-seen (l) (setf seenlist (cons l seenlist)))
  7.   (defun printrec (l) (printrec-any l) (setf seenlist nil))
  8.   (defun printrec-any (l)
  9.     (cond ((atom l) (prin1 l) (princ " "))
  10.           ((seenp l) (princ "<...> "))
  11.           (t
  12.            (make-seen l)
  13.            (princ "(")
  14.            (printrec-list l)
  15.            (princ ") ")))
  16.      nil)
  17.   (defun printrec-list (l)
  18.     (printrec-any (car l))
  19.     (cond ((cdr l)
  20.            (cond ((seenp (cdr l))
  21.                   (princ "<...> "))
  22.                  ((atom (cdr l))
  23.                   (princ ". ")
  24.                   (prin1 (cdr l))
  25.                   (princ " "))
  26.                  (t
  27.                   (make-seen (cdr l))
  28.                   (printrec-list (cdr l))))))
  29.     nil)
  30. ; )
  31.